home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / The Hacks! / Spotlight Hack / source / AppPrefs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-06-21  |  2.3 KB  |  90 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    AppPrefs.cp                                            ©1996 Dmitry Boldyrev
  3. // ===========================================================================
  4.  
  5. #include "AppPrefs.h"
  6.  
  7. #define PREFS_FILE_NAME     "\pSpotlight Hack Prefs"
  8. #define    PREFS_FILE_CREATOR    'liTE'
  9. #define    PREFS_FILE_TYPE        'pref'
  10. #define PREFS_STRUCT        SpotlightPrefs
  11.  
  12. void PrefsResetToDefaults(void *buffer)
  13. {
  14.     PREFS_STRUCT *prefs = (PREFS_STRUCT*)buffer;
  15.     
  16.     prefs->activateModifiers = controlKey | optionKey;
  17.     prefs->disableModifiers = controlKey | optionKey | rightControlKey | rightOptionKey;
  18.     prefs->spotlightSize = 150;
  19.     prefs->switchToFinder = true;
  20.     prefs->hideApps = true;
  21.     prefs->oneLayer = false;
  22. }
  23.  
  24. Boolean PrefsLoad(void *buffer)
  25. {
  26.     short    vRefNum;
  27.     long    dirID;
  28.     OSErr    err;
  29.     short    fd;
  30.     long    size;
  31.     long    thePrefsVersion;
  32.  
  33.     err = FindFolder( kOnSystemDisk, kPreferencesFolderType, kCreateFolder, &vRefNum, &dirID );
  34.     if (err != noErr) goto x1;
  35.     
  36.     err = HOpen(vRefNum, dirID, PREFS_FILE_NAME, fsCurPerm, &fd);
  37.     if (err != noErr) goto x1;
  38.  
  39.     /* Reading Prefs version */
  40.     size = sizeof(long);
  41.     if ((err = FSRead(fd, &size, &thePrefsVersion)) != noErr) goto x2;
  42.     if (thePrefsVersion != PREFS_VERSION) goto x2;
  43.     
  44.     size = sizeof(PREFS_STRUCT);
  45.     if ((err = FSRead(fd, &size, buffer)) != noErr) goto x2;
  46.         
  47.     err = FSClose(fd);
  48.     return true;
  49.  
  50. x2:    err = FSClose(fd);
  51. x1:    PrefsResetToDefaults(buffer);
  52.     return true;
  53. }
  54.  
  55. Boolean PrefsSave(void *buffer)
  56. {
  57.     short    vRefNum;
  58.     long    dirID;
  59.     OSErr    err;
  60.     short    fd;
  61.     long    size;
  62.     long    thePrefsVersion;
  63.     
  64.     err = FindFolder(kOnSystemDisk, kPreferencesFolderType, kCreateFolder, &vRefNum, &dirID);
  65.     if (err != noErr) return false;
  66.  
  67.     err = HDelete(vRefNum, dirID, PREFS_FILE_NAME);
  68.     //if (err != noErr) return false; /* commented - Dave */
  69.     
  70.     err = HCreate(vRefNum, dirID, PREFS_FILE_NAME, PREFS_FILE_CREATOR, PREFS_FILE_TYPE);
  71.     if (err != noErr) return false;
  72.         
  73.     err = HOpen(vRefNum, dirID, PREFS_FILE_NAME, fsCurPerm, &fd);
  74.     if (err != noErr) goto x1;
  75.  
  76.     /* Writing Prefs version */
  77.     size = sizeof(long);
  78.     thePrefsVersion = PREFS_VERSION;
  79.     if ((err = FSWrite(fd, &size, &thePrefsVersion)) != noErr) goto x2;
  80.  
  81.     size = sizeof(PREFS_STRUCT);
  82.     if ((err = FSWrite(fd, &size, buffer)) != noErr) goto x2;
  83.  
  84.     err = FSClose(fd);
  85.     return true;
  86.  
  87. x2: err = FSClose(fd);
  88. x1: err = HDelete(vRefNum, dirID, PREFS_FILE_NAME);
  89.     return false;
  90. }